package com.nx.samuel.dubbo_spi;

import com.nx.samuel.dubbo_spi.api.Car;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


public class CarDemo {

    public static void main(String[] args) {
        // 获得一个可以扩展到额loader
        ExtensionLoader<Car> extensionLoader =  ExtensionLoader.getExtensionLoader(Car.class);
        // 获取扩展接口的扩展点, 这里我们指定获取red的扩展
        Car redCar = extensionLoader.getExtension("red");
        // 获取扩展实例中的具体实现
        redCar.getColor();



        // dubbo自适应实例, 先得到想要扩展的实现类gree
        Car greeCar = extensionLoader.getExtension("gree");
        // 封装URL参数, 指定我们注入black
        Map<String, String> map = new HashMap<>();
        map.put("car","black");
        URL url = new URL("","",1,map);
        // 执行注入的car的getColorForUrl方法
        greeCar.getColorForUrl(url);
        // 执行注入的car的getColor方法
        // todo 但是执行注入的car的getColor方法为什么会报错呢? 执行注入的car的getColorForUrl方法都成功了
//        greeCar.getColor();

        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
